package tech.xs.common.framework.domain.annotations;

import tech.xs.common.framework.domain.enums.BaseEnum;
import tech.xs.common.domain.enums.YesNoEnum;

import java.lang.annotation.*;

@Documented
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface DictData {

    /**
     * 字典Code
     * 修饰枚举时,默认值为ClassName,若枚举继承{@link BaseEnum},则值为{@link BaseEnum#getValue()}}
     *
     * @return 字典值
     */
    String code() default "";

    /**
     * 字典名称
     * 修饰枚举时,默认值为ClassName
     *
     * @return 名称
     */
    String name() default "";

    /**
     * 排序值
     * 修饰枚举时,默认值为枚举的ordinal
     *
     * @return 排序值
     */
    int order() default 0;

    /**
     * 状态,默认正常
     *
     * @return 状态
     */
    YesNoEnum status() default YesNoEnum.YES;

    /**
     * 备注
     *
     * @return 备注
     */
    String remark() default "";

    ChildDictData[] children() default {};

}
